#ifndef mesinkata_h
#define mesinkata_h

#include<stdio.h>
#include<stdlib.h>
#include "../mesinkar/mesinkar.h"
#include "boolean.h"

#define BLANK ' '
#define NEWLINE '\n'
#define MaxStringLength 128

typedef struct {
	char s[MaxStringLength];
	int length;
} string;
//tipe data string

string cString;
//Current string, string yang saat ini sedang diakuisisi

boolean end;
//Menandai apakah sudah end of pita


boolean IsCCIgnored();

void Ignore_Blank(FILE *f);
/**
 * Melewatkan blank pada pita karakter
 * */

void StartString(FILE *f);
/**
 * Menginisiasi pembacaan pita karakter
 * */

void AdvString(FILE *f);
/**
 * Mengakuisisi 1 kata menjadi 1 string
 * */

void CopyString(FILE *f);
/**
 * Mengcopy 1 kata dari pita karakter ke string
 * */

boolean IsStringEqual(string k1 , string k2);
/**
 * Mengecek kesamaan 2 string
 * */

string StrCat(string s1 , string s2);
/**
 * Menggabungkan 2 string
 * */

//RELASIONAL
boolean IsStringLt(string s1 , string s2);
/**
 * Mengecek apakah s1 lebih kecil daripada s2 secara alfabetikal
 * */

//KONVERTER
int StringToInt(string s);
string IntToString(long x);

char *StringToChar(string s);
string CharToString(char *c);

float StringToFloat(string s);
string FloatToString(float x);

boolean StringToBool(string s);
string BoolToString(boolean x);

//OPERATOR
string SubString(string s, int start, int length);
/**
 * Mengambil substring dari posisi start sepanjang length
 * */

void ToUpperCase(string *s);
/**
 * Mengubah s menjadi huruf besar semua
 * */

string UpperCase(string s);
/**
 * mengembalikan hasil konversi s menjadi huruf besar semua
 * */

string LowerCase(string s);
/**
 * mengembalikan hasil konversi s menjadi huruf kecil semua
 * */

string TrimWhiteSpace(string s);
/**
 * Menghilangkan spasi dari s
 * */

string DeleteSubString(string s , int pos , int length);
/**
 * menghilangkan substring dari string s dari posisi s sepanjang length
 * */

#endif
